package mySql

import (
	"fmt"
	_ "github.com/go-sql-driver/mysql"
	"github.com/jinzhu/gorm"
	"project/controller"
)

/**
 * @File : sqlInit.go
 * @Description : 数据库连接，别的类需要用到数据库内容时直接使用sql.getDb获取db（使用gorm框架）
 * @Author : 吴概
 * @Date : 2023/2/6
 */

var db *gorm.DB

// SqlInit 连接数据库，数据库的初始化
// 第一次使用时会自动创建表单，仅需根据注释修改dsn即可（数据库需要自行创建）
func SqlInit() {
	//"用户名:密码@[连接方式](主机名:端口号)/数据库名?参数"
	dsn := "root:03719@tcp(127.0.0.1:3306)/database2023113?charset=utf8mb4&parseTime=True&loc=Local"
	var err error
	db, err = gorm.Open("mysql", dsn)
	if err != nil {
		fmt.Println("连接失败", err)
	}
	TableCreate()
	TableDataUpdate() //用于加载demoData.go中的实例数据，若不需要可以注释掉此方法
}

// TableCreate 建表（自动迁移）
func TableCreate() {
	if db == nil {
		fmt.Println("数据库未连接")
		return
	}
	//自动迁移，每新建一个要放在数据库中的类时需要添加在此处
	db.AutoMigrate(&controller.User{}, &controller.Video{}, &controller.Comment{}, &controller.Relation{}, &controller.Publish{}, &controller.Like{}, &controller.Chat{}, &controller.Message{})
	db.Set("gorm:table_options", "ENGINE=InnoDB").AutoMigrate(&controller.User{}, &controller.Video{}, &controller.Comment{}, &controller.Relation{}, &controller.Publish{}, &controller.Like{}, &controller.Chat{}, &controller.Message{})
}
